import express from 'express'
import * as path from 'path'
import { app } from 'electron'
import serveStatic from 'serve-static'

/* 
  启动静态文件服务器
  @param proxyResourceDirectory 代理资源目录
  @param app express应用


*/
async function startStaticFileServer(proxyResourceDirectory: string) {
  // 创建 Express 应用
  const staticApp = express()

  // 指定你想暴露的本地目录（可动态配置）
  const basePath = path.resolve(__dirname, proxyResourceDirectory)
  debugger
  let musicDir =
    basePath || 'E:/5Project/PCByElectronProject/electron-app/src/main/localMusicService/music' // 你可以通过配置或用户选择更改

  // 添加完整CORS支持（需在静态文件中间件前设置）
  staticApp.use((req, res, next) => {
    // 允许所有源
    res.header('Access-Control-Allow-Origin', '*')
    // 允许常见请求方法
    res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS')
    // 允许常见请求头
    // res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization')
    res.header('Access-Control-Allow-Headers', 'Content-Type')
    // 处理预检请求
    /* if (req.method === 'OPTIONS') {
      res.sendStatus(200)
      return
    } */
    next()
  })

  // 将 /static 路径映射到本地 musicDir 目录
  staticApp.use(
    '/static',
    serveStatic(musicDir, {
      index: false, // 禁止显示目录列表
      dotfiles: 'deny'
    })
  )

  // 启动服务器（端口要和前端一致，比如 5173）
  const PORT = 9000
  const staticServer = staticApp.listen(PORT, () => {
    console.log(`静态文件服务器运行在 http://127.0.0.1:${PORT}/static`)
  })
  // 退出时关闭文件服务器
  app.on('before-quit', () => {
    staticServer &&
      staticServer.close(() => {
        console.log('📁 静态文件服务器已关闭')
      })
  })
}

// 静态文件服务器地址
export { startStaticFileServer }
